package ar.edu.utn.frgp.mvc.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ar.edu.utn.frgp.banco.domain.PagoServicios;
import ar.edu.utn.frgp.banco.domain.Servicio;
import ar.edu.utn.frgp.beans.MessageBean;
import ar.edu.utn.frgp.beans.PagoServiciosBean;
import ar.edu.utn.frgp.beans.ServicioBean;

/**
 * Servlet implementation class LoanPayServlet
 */
public class LoanPayServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public LoanPayServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		MessageBean ban = new MessageBean();
		ServicioBean servicioBean = new ServicioBean();
		PagoServiciosBean pagoServiciosBean = new PagoServiciosBean();

		List<Servicio> servicio;
		List<PagoServicios> pagoServicios;

		// carga de datos
		pagoServicios = cargaPagoServicios();
		servicio = cargaServicios(pagoServicios);

		// seteo de beans con datos
		servicioBean.setServicio(servicio);
		pagoServiciosBean.setPagoServicios(pagoServicios);
		ban.setMensaje("1");

		// seteo variables para bean
		req.setAttribute("ban", ban);
		req.setAttribute("serv", servicioBean);
		req.setAttribute("servP", pagoServiciosBean);

		req.getRequestDispatcher("Pago.jsp").forward(req, resp);
	}

	// funciones
	/**
	 * @return lista de servicios pagos
	 */
	private List<PagoServicios> cargaPagoServicios() {
		List<PagoServicios> pagoServicios = new ArrayList<PagoServicios>();
		PagoServicios pagoServicio;
		Date fecha = new Date();

		for (int i = 0; i < 3; i++) {
			pagoServicio = new PagoServicios();

			pagoServicio.setId_pagoservicio(i);
			pagoServicio.setFecha(fecha);
			pagoServicio.setId_servicio(i + 1);
			pagoServicio.setId_cuenta(10000342);

			pagoServicios.add(pagoServicio);
		}

		return pagoServicios;
	}

	/**
	 * @param pagosServicios
	 *            Para traer los detalles de cada uno de los servicios abonados
	 * @return los detalle de cada uno de los servicios pagados
	 */
	private List<Servicio> cargaServicios(List<PagoServicios> pagosServicios) {
		List<Servicio> servicioLst = new ArrayList<Servicio>();
		Servicio servicio;

		servicio = new Servicio();

		servicio.setId_servicio(1);
		servicio.setDescripcion("Luz");
		servicio.setMontoFijo(Double.parseDouble("120.00"));
		servicioLst.add(servicio);

		servicio = new Servicio();

		servicio.setId_servicio(2);
		servicio.setDescripcion("Agua");
		servicio.setMontoFijo(Double.parseDouble("120.00"));
		servicioLst.add(servicio);

		servicio = new Servicio();

		servicio.setId_servicio(3);
		servicio.setDescripcion("Gas");
		servicio.setMontoFijo(Double.parseDouble("13240.00"));

		servicioLst.add(servicio);

		return servicioLst;
	}

}
